package com.bbva.gptf.back.transformador;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.convert.converter.Converter;

import com.bbva.gptf.back.dominio.Tgpt037Parametro;
import com.bbva.gptf.back.util.Constantes;
import com.bbva.gptf.back.util.Propiedades;
import com.bbva.gptf.dto.bean.Fichero;
import com.bbva.gptf.dto.bean.InfoCarga;
import com.bbva.gptf.dto.bean.ProcesoFichero;
import com.bbva.gptf.dto.servicio.carga.ServicioInformacionLoader;
import com.bbva.gptf.dto.servicio.carga.ServicioInformacionProceso;
import com.bbva.jee.arq.spring.core.gce.ExcepcionAplicacion;
/**
 * @author Javier Estrella Rodriguez
 * @version 1.0
 * @created 08-ene-2013 12:17:44
 */
public class InfoCargaTransformador implements Converter<Fichero, InfoCarga> {
	
	private InfoCarga infoCarga;
	@Autowired
	private ServicioInformacionLoader servicioInformacionLoader;
	@Autowired
	private ServicioInformacionProceso servicioInformacionProceso;
	
	public void setServicioInformacionLoader(
			ServicioInformacionLoader servicioInformacionLoader) {
		this.servicioInformacionLoader = servicioInformacionLoader;
	}

	public void setServicioInformacionProceso(
			ServicioInformacionProceso servicioInformacionProceso) {
		this.servicioInformacionProceso = servicioInformacionProceso;
	}

	/**
	 * 
	 * @param source
	 */
	@Override
	public InfoCarga convert(Fichero source){
		try {
		Tgpt037Parametro parametro = Tgpt037Parametro.findTgpt037Parametro("PROPIEDADES");
		infoCarga = new InfoCarga();
		infoCarga.setFichero(source);
		ProcesoFichero procesoFichero = servicioInformacionProceso.obtenerProceso(infoCarga);
		String nombreFicheroControl = procesoFichero.getTxFicheroControl();
		String rutaControl = servicioInformacionLoader.obtenerRutaControl();
		infoCarga.setRutaProperties(parametro.getNbValor() + ".properties");
		//infoCarga.setRutaProperties("W:\\Desarrollo\\gptf\\back\\src\\main\\resources\\META-INF\\spring\\carga.properties");
		infoCarga.setRutaControl(rutaControl.concat(Propiedades
					.getProperty(Constantes.SEPARADOR, infoCarga
					.getRutaProperties()).concat(nombreFicheroControl)));
		infoCarga.setRuta(procesoFichero.getTxRuta());
		infoCarga.setMascara(source.getNbMascara());
		infoCarga.setRutaLog(servicioInformacionLoader.obtenerRutaControlLog());
		infoCarga.setFiles(servicioInformacionLoader.obtenerFicherosFisicos(source));
		} catch (ExcepcionAplicacion e) {
			e.printStackTrace();
		}
		return infoCarga;
	}
}